package com.cyzy.controller;
import com.cyzy.dto.Result;
import com.cyzy.pojo.Comment;
import com.cyzy.pojo.CommentLikeRecord;
import com.cyzy.pojo.Message;
import com.cyzy.service.CommunityService;
import com.cyzy.vo.CommunityComment;
import com.cyzy.vo.PublishCommon;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

/**
 * @description: 艺术馆的社区控制层
 * @author: yangJingShi
 * @date: 2025/6/19 下午11:22
 * @param:
 * @return:
 **/
@RequestMapping("/community")
@RestController
public class CommunityController {

    @Autowired
    private CommunityService communityService;

    // 保存图片的目录
    private final String IMG_DIR = "C:/Users/yangjingshi/Desktop/eduImg/";

    /*
     * @description: 用户查看社区（家长社区和老师社区）
     * @author: yangJingShi
     * @date: 2025/6/20 下午3:44
     * @param: [parentId, campusId, teacherId, subIndex]
     * @return: com.cyzy.dto.Result
     **/
    @GetMapping("/getCommunityInfo")
    public Result getCommunityInfo(@RequestParam("parentId") Long parentId,
                                   @RequestParam("campusId") Long campusId,
                                   @RequestParam("teacherId") Long teacherId,
                                   @RequestParam("subIndex") Long subIndex
                                   ){
        List<CommunityComment> communityInfo = communityService.queryCurrentCommunityInfo(campusId, parentId, teacherId,subIndex);
        System.out.println("communityComments的值为:"+communityInfo);
        return Result.ok().message("获取社区信息").data("communityInfo",communityInfo);
    }

    /*
     * @description: 查看指定动态的评论
     * @author: yangJingShi
     * @date: 2025/6/20 下午3:50
     * @param: [mesId]
     * @return: com.cyzy.dto.Result
     **/
    @GetMapping("/selectCommentsBymesId")
    public Result selectCommentsBymesId(@RequestParam("mesId") Long mesId){
        List<Comment> comments = communityService.selectCommentsBymesId(mesId);
        System.out.println("查询出来的全部评论为:"+comments);
        return Result.ok().message("查看社区").data("comments",comments);
    }
    /*
     * @description: 新增一条评论
     * @author: yangJingShi
     * @date: 2025/6/20 下午10:51
     * @param: [comment]
     * @return: com.cyzy.dto.Result
     **/
    @PostMapping("/insertCommentByMesId")
    public Result insertCommentByMesId(@RequestBody Comment comment){
        int i = communityService.insertCommentByMesId(comment);
        if (i!=0){
            System.out.println("用户评论成功");
        }else{
            System.out.println("用户评论失败");
        }
        return Result.ok().message("用户对动态进行评论");
    }
    /*
     * @description: 用户点赞社区内容
     * @author: yangJingShi
     * @date: 2025/6/21 上午10:23
     * @param: [record]
     * @return: com.cyzy.dto.Result
     **/
    @PostMapping("/userLikeCommunityCommon")
    public Result userLikeCommunityCommon(@RequestBody CommentLikeRecord record){
        System.out.println(record);
        int i = communityService.updateUserCommonLike(record);
        if (i!=0){
            return Result.ok().message("用户点赞社区动态成功");
        }else{
            return Result.ok().message("用户点赞社区动态失败");
        }

    }
    /*
     * @description: 用户发布动态选择自己的孩子信息（老师只能选择班级）
     * @author: yangJingShi
     * @date: 2025/6/21 上午10:30
     * @param: [campusId, teacherId, parentId]
     * @return: com.cyzy.dto.Result
     **/
    @GetMapping("/queryUserList")
    public Result queryUserList(@RequestParam("campusId") Long campusId,
                                @RequestParam("teacherId") Long teacherId,
                                @RequestParam("parentId") Long parentId){

        System.out.println("campusId："+campusId);
        System.out.println("teacherId："+teacherId);
        System.out.println("parentId："+parentId);
        List<PublishCommon> userList = communityService.queryUserListById(campusId, parentId, teacherId);
        return Result.ok().message("用户发布动态选择自己的孩子信息").data("userList",userList);

    };

    /*
     * @description: 新增一条动态
     * @author: yangJingShi
     * @date: 2025/6/21 下午6:25
     * @param: [message]
     * @return: com.cyzy.dto.Result
     **/
    @PostMapping("/acceptTheDynamics")
    public Result acceptTheDynamics(@RequestBody Message message){
        System.out.println(message);
        int i = communityService.acceptTheDynamics(message);
        if (i!=0){
            return Result.ok().message("发布动态成功").data("status",i);
        }else {
            return Result.ok().message("发布动态失败").data("status",i);
        }

    }

    /**
     * 上传图片接口
     */
    @PostMapping("/uploadImage")
    public Result uploadImage(@RequestParam("file") MultipartFile file) {


        try {
            // 检查目录是否存在，不存在则创建
            File dir = new File(IMG_DIR);
            if (!dir.exists()) {
                dir.mkdirs();
            }

            // 生成唯一文件名，避免文件覆盖
            String originalFilename = file.getOriginalFilename();
            String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String fileName = UUID.randomUUID().toString() + fileSuffix;

            // 构建完整文件路径
            String filePath = IMG_DIR + fileName;

            // 保存文件到指定目录
            file.transferTo(new File(filePath));

            // 返回图片存储路径
            return Result.ok()
                    .data("path", fileName)
                    .message("图片上传成功");
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error().message("图片上传失败");
        }
    }
}
